home *** CD-ROM | disk | FTP | other *** search
-
- ===============================================================================
-
- Y O D L
- Yet Oneother Document Language
-
- Karel Kubat (karel@icce.rug.nl)
-
- ===============================================================================
-
- YODL (Yet Oneother Document Language) is a package that consists of programs,
- some shell scripts, and auxiliary "lib" files for one of the programs. The
- whole purpose of the package is to provide a simple-to-use and extensible
- document language, that can be used to convert documents in the YODL format to
- a variety of other formats. In this purpose, YODL somewhat resembles generic
- markup languages (e.g. SGML), but:
-
- - YODL is easier to use. Well I find so.
-
- - YODL is very well documented. That my version of SGML isn't is, I guess,
- no fault of SGML, but I had a _very_ hard time getting SGML to do what I
- wanted it to do! Well, YODL should be easier to handle. The docs include
- various manpages and a more than 50 pages DIN A4 document.
-
- - YODL doesn't insist on weird tags. YODL is not a markup language in that
- sense (starting and ending tags), YODL handles all its commands in a
- C-style manner; e.g. em(text) will set the text emphasized. Similarly,
- macros can have two arguments or more, also all in a parameter-list
- format. This is more of an advantage than you might think at first
- glance: e.g., my editor won't match a closing tag in HTML with the
- opening tag, but it _will_ show the open-parenthesis when I type a
- closing parenthesis!
-
- - YODL has support for conditional processing: by testing for some symbol,
- or say for the presence of an argument, you can do different things in a
- macro. Or you can redefine macros, and the such.
-
- Currently the package supports conversions to LaTeX, HTML, to the "man"
- format, and poor-mans conversions to plain ASCII and SGML (for compatibility
- reasons at our site). Other conversions are of course possible, but these are
- the formats that I use and why I wrote YODL in the first place.
-
- If you want to obtain YODL and try it out, ftp to
- ftp://ftp.icce.rug.nl/pub/unix/ and look for a file yodl-X.YY.tar.gz, with
- X.YY being a version number (0.00 is of course the first). Unpack it in a
- "sources" directory and type "make htmldoc" or "make latexdoc" and see for
- yourself...
-
- YODL has evolved from the previous DOM package, that I developed but didn't
- distribute yet. DOM used to be "DOcument Maintainer", but I don't think that
- the nomenclature was too good. Besides, I can now use ".yo" for file
- extensions.
-
- YODL is currently beta-state, that means that it may not be very complete (but
- I'm working on it), that there may be bugs in it (not that I know of), and
- that new versions may arrive quickly. Yes, I am looking for testers! If
- you're interested, get YODL and mail me what you think.
-
- Just for fun, here's a piece of a YODL file. Not that you should carefully read
- it, it's just to give you an idea of the YODL language.
-
- ------------------------------------------------------------------------------
- The tt(yodl) program is reads one or more input files, interprets the commands
- therein, and writes one output file. The program is started as:
-
- center(
- tt(yodl) em(flags) em(inputfile) em([inputfile...])
- )
-
- In this specification, the flags are optional and may be:
-
- itemize(
-
- it() tt(-D) em(name): Defines em(name) as a symbol. This flag is similar
- to the tt(DEFINESYMBOL) statement which may appear in the text. The
- purpose of defining symbols is described later.
-
- it() tt(-I) em(directory): This defines the system-wide include directory
- where tt(yodl) searches for its input files when they cannot be located
- by their bare name. E.g. a statement to include a given file:
-
- verb(INCLUDEFILE(latex))
-
- will search for the file tt(latex) in the current directory, and when that
- fails, in the system-wide include directory. The system-wide include
- directory is typically the place where the maintainer of a system stores
- macro-files for YODL. This searching process applies to files that are
- included inside a document but also applies to filenames on the command
- line when invoking the tt(yodl) program.
-
- The name of the included file (tt(latex) in the above example) is the
- bare name, the tt(yodl) program will supply a default extension if
- necessary.
-
- The tt(-I) flag overrules YODL's built-in name for the system-wide include
- directory. The built-in name is defined when compiling YODL, and is usually
- tt(/usr/local/lib/yodl).
-
- it() tt(-k): This flag causes YODL to keep the intermediate parsing files,
- instead of removing them. The intermediate files are usually located in
- the directory tt(/tmp) and named something like tt(yodl1254.4), where the
- numbers indicate the process number of the YODL run (1254) and the ordinal
- number of the parsing run (4). Using this flag is usually only good for
- debugging purposes.
-
- it() tt(-o) em(file): This option causes YODL to write its output to em(
- file). By default, the output goes to the standard output stream. E.g.,
- you can use the tt(yodl) program to read a file tt(input) and to write to
- tt(output) with the following two commands:
-
- verb(\
- yodl input > output
- yodl -ooutput input)
-
- it() tt(-p) em(maxpass): This flag causes YODL to abort when the number of
- parsing cycles exceeds em(maxpass), which is usually 20. Exceeding this
- number usually means a circular definition somewhere in the document. This
- is the case when, e.g., a macro tt(a) expands to tt(b), and tt(b) expands
- again to tt(a).
-
- it() tt(-t): This flag enables tracing: while parsing, YODL writes its
- output to the standard error stream. As is the case with the tt(-k) flag,
- this option is for debugging purposes.
-
- it() tt(-v): This flag increases YODL's `verbosity level' and may occur
- more than once. The presence of one tt(-v) causes YODL to show which files
- are parsed; four tt(-v)'s show the inner workings of YODL's lexical
- analyzer.
-
- it() tt(-w): The presence of this flag caused YODL to warn when, e.g.,
- symbols are redefined.
- )
-
- The em(inputfile) elements on the command line specify which files YODL should
- process. All names are supplied with an extension+footnote(this extension is
- defined in the installation of YODL and is usually .yo). The files are then
- searched for `as-is', or in the system-wide include directory.
-
- Note that all filenames on the command line are input files. To
- define an output file, either use the tt(-o) flag or redirect the output.
- ------------------------------------------------------------------------------
-
- That's all for now. Hope that I have tickled your curiosity..
- Karel.
-